package com.codeplatform.dto;

import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * 代码执行请求DTO
 */
@Data
public class CodeExecutionRequest {
    
    /**
     * 编程语言
     */
    @NotBlank(message = "编程语言不能为空")
    private String language;
    
    /**
     * 代码内容
     */
    @NotBlank(message = "代码内容不能为空")
    @Size(max = 50000, message = "代码长度不能超过50000字符")
    private String code;
    
    /**
     * 输入数据（可选）
     */
    private String input;
    
    /**
     * 执行超时时间（秒），默认10秒
     */
    private Integer timeoutSeconds = 10;
    
    /**
     * 内存限制（MB），默认128MB
     */
    private Integer memoryLimitMB = 128;
    
    /**
     * 是否保存执行记录
     */
    private Boolean saveRecord = false;
    
    /**
     * 代码标题（保存时使用）
     */
    private String title;
    
    /**
     * 是否公开（保存时使用）
     */
    private Boolean isPublic = false;
    
    /**
     * 用户ID（从token中获取）
     */
    private Long userId;
    
    /**
     * 会话ID（用于WebSocket实时推送）
     */
    private String sessionId;
}